package thread.word_matching;
/*
    编辑距离算法
 */
public class DistanceEditing {
    /**
     * 从word1到word2的编辑距离，要操作几次？
     * @param word1
     * @param word2
     * @return
     */
    public int distance(String word1, String word2){
        int len1 = word1.length();
        int len2 = word2.length();
        //初始化dp数组
        int dp[][] = new int[len1+1][len2+1];
        //初始化边界条件
        for (int i=0;i<=len1;i++)
            dp[i][0] = i;
        for (int j=0;j<=len2;j++)
            dp[0][j] = j;
        //dp[i][j]表示word1的前i个字符到word2的前j个字符的编辑距离
        for (int i=1;i<=len1;i++){
            for (int j=1;j<=len2;j++){
                //如果word1的第i个字符和word2的第j个字符相同
                if (word1.charAt(i-1) == word2.charAt(j-1))
                    dp[i][j] = dp[i-1][j-1];
                else
                    dp[i][j] = Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1])) + 1;
            }
        }
        return dp[len1][len2];
    }

    /**
     * TODO 1. 实现dp 2. 找两个单词中相同的最长子串，删除相同的字串，并返回删除结果  3. dp 加权
     *
     */


}
